Skip to content

feature/Chaos-613-user-invite-system#641

Closed
peternuyn wants to merge 126 commits intomainfrom
CHAOS-613-user-invite-system
Closed

feature/Chaos-613-user-invite-system#641
peternuyn wants to merge 126 commits intomainfrom
CHAOS-613-user-invite-system

Conversation

@peternuyn
Copy link

what i have done:

  • Implement a new table organisation_invites, to store invites.
  • model and handler for invites api (GET & POST invite only), modify organisation.rs, so it now also uses invites.rs in the logic.
  • UI for invite page + error log, if not added successfully.

To test:

  1. have an email with admin access ready. Logined.
  2. open a new private browser to represent new user that get invited.
  3. On the admin side, Click member, and add member. You put down the email you want to invite. Click okay, if error, the invite box will tell you reason why.
  4. Now open CHaos DB and do "select * from organisation_invites", MAKE SURE YOU SEE AN INVITE, if the adding was successful. THere will be an invite code, copy that code and paste it in your url. for example:
    To see the invite page:
    http://localhost:3000/en/dashboard/invite/7c1fbfcde -> replace "7c1fbfcde" with your invite code you have in DB. This will open up an invite page, you can now accept it, if account not created, then u have to create one. IF browser is currently have an CHaos account, but different email, user. You will not allowed to accept anyway.

KavikaPalletenne and others added 30 commits October 5, 2023 12:38
* start implementing authorisation

* feat(backend): implement extractor for AuthUser (user id)

* feat(backend): implement extractor for SuperUser (user id + authZ)

---------

Co-authored-by: kappamalone <uzman.zawahir1@gmail.com>
* start implementing authorisation

* feat(backend): implement extractor for AuthUser (user id)

* feat(backend): implement extractor for SuperUser (user id + authZ)

* feat(backend): get existing or create new user for Google login

* feat(backend): get name from Google user profile

* feat(backend): update schema.prisma to include lowercase table names + updated_at default time for users

---------

Co-authored-by: kappamalone <uzman.zawahir1@gmail.com>
* feat(ci): add postgres and migration to actions workflow

* fix(ci): fix incorrect working directory
* feat(ci): add postgres and migration to actions workflow

* fix(ci): fix incorrect working directory

* fix(ci): ran cargo fmt and fix build errors
* feat(ci): add postgres and migration to actions workflow

* fix(ci): fix incorrect working directory

* fix(ci): ran cargo fmt and fix build errors

* fix(ci): Incorrect working directory for cargo fmt

* fix(ci): rust-cache keys
* feat(ci): add postgres and migration to actions workflow

* fix(ci): fix incorrect working directory

* fix(ci): ran cargo fmt and fix build errors

* fix(ci): Incorrect working directory for cargo fmt

* fix(ci): rust-cache keys

* fix(ci): add workspaces to rust-cache
* feat(ci): add postgres and migration to actions workflow

* fix(ci): fix incorrect working directory

* fix(ci): ran cargo fmt and fix build errors

* fix(ci): Incorrect working directory for cargo fmt

* fix(ci): rust-cache keys

* fix(ci): add workspaces to rust-cache

* fix(ci): cargo fmt remove manifest-path arg
* fix(ci): run CI on rewrite branch pull request

* feat(docs): added endpoint docs for org and users
* feat(docs): updates to user and organisation api spec

* feat(docs): draft spec for campaign api

* fix(ci): update rust workflow to use actions/cache
* feat(backend): create sql migrations

* feat(backend): remove prisma schema

* fix(ci): change from prisma migration to sql

* fix(ci): no default sqlx-cli features

* fix(backend): remove duplicate primary key for applications

* fix(backend): rename migrations to prepend 'create'

* fix(ci): check for cached sqlx before installing with cargo

* fix(ci): remove ci run on specific paths
* feat(db): add indexes for foreign key reference columns

* fix(db): index naming and missing semicolons

* dep(backend): update axum

* fix(backend): remove testing jwt handlers

* feat(backend): Add custom jwt validator and header

* feat(backend): basic error handling enum

* fix(backend): ran cargo fmt

* fix(backend): remove unused imports
* feat(db): add indexes for foreign key reference columns

* fix(db): index naming and missing semicolons

* dep(backend): update axum

* fix(backend): remove testing jwt handlers

* feat(backend): Add custom jwt validator and header

* feat(backend): basic error handling enum

* fix(backend): ran cargo fmt

* fix(backend): remove unused imports

* Change to using `thiserror`

* remove 'Error' from logic error names
* feat: Initial draft
TODO: TESTING + more clarification

* rearranged import

* clear errors

* post testing

* feat(db): add indexes for foreign key reference columns

* fix(db): index naming and missing semicolons

* dep(backend): update axum

* fix(backend): remove testing jwt handlers

* feat(backend): Add custom jwt validator and header

* feat(backend): basic error handling enum

* fix(backend): ran cargo fmt

* fix(backend): remove unused imports

* CRUD operations - awaiting Campaign - haven't enforced db safety

* implement feedback

* Update rust.yml to include 224 branch

* logic and style fixes

* Change to using `thiserror`

* add organisation_role type to db

* update migration timestamps to be `NOT NULL`

* change sqlx `time` to `chrono`

* integrate organisations crud with error handling

* return member role with org members

* update sqlx type name for `UserRole`

* simplify handlers to use new error type

* removed unused imports

* added `OrganisationAdmin` extractor

* use `Transaction` when doing multiple queries

* cargo fmt

* add org route to app

* move `Organisation` service functions into `Organisation` struct

* moved org handlers into `OrganisationHandler` struct

* ran cargo fmt

* add S3 url generation to logo update

* fixed error renaming

* add routes to `main.rs`

* cargo fmt

---------

Co-authored-by: Alexander <alexander.l.lai@student.unsw.edu.au>
Co-authored-by: Kavika <kbpalletenne@gmail.com>
* boilerplate for campaign

* service layer for get, patch,put delete

* handler updates

* handler layer finalised

* updated campaigns

* fixed patch issue

* remove empty `service/campaign.rs` file

* add `organisation_name` to campaign details response

* fix indentation of query code

* change `cover_image` column type to UUID

* minor changes

* ran `cargo fmt`

* remove unused `state` param

* insert `organisation_id` when creating new campaign

* change `organisations` logo column to `UUID`

---------

Co-authored-by: Kavika <kbpalletenne@gmail.com>
* feat: added Role struct in model, implmented get and post for Role, updated api ymal for Role, added migration to change Role table in db

* feat:added methods for delte and update role;added handler for role and added some routes into main regarding role

* feat: added more api yaml documentation, added handler for create and get all roles in a campaign, added get all in roles in a campagin in model

* fix: changed get_roles to Campaign Handler, changede migration file

* change all id columns to `BIGINT` or `BIGSERIAL`

* create `RoleAdmin` struct

* move `create_role()` to `CampaignHandler`

* cleanup

* ran cargo fmt

---------

Co-authored-by: Alex_Miao_WSL <yuan_sen.miao@student.unsw.edu.au>
Co-authored-by: Kavika <kbpalletenne@gmail.com>
KavikaPalletenne and others added 28 commits October 28, 2025 16:07
Allow application owner, and members of organisation to read application attributes & questions
* Almost done, now just touching abit on UI, and cleaning codebase

* fixed codebase and implemented the delete button

* fixed submitting error for mcq, and also added edit button lockout

* fixed the ranking block edit buttion issue, also cleaned up codebase
* Almost done, now just touching abit on UI, and cleaning codebase

* fixed codebase and implemented the delete button

* fixed submitting error for mcq, and also added edit button lockout

* fixed the ranking block edit buttion issue, also cleaned up codebase

* fixed migration
initial nextjs setup

rename "Resume Application" -> "Continue Application"

update frontend-nextjs/.gitignore

Update bun.lock

setup server-side auth functions

basic sidebar

setup i18n

add common terms to dictionaries

remove unused backend imports

run rust build workflow on pulls to `CHAOS-571-integrate-be-fe`
fetch user organisations for sidebar

handle organisation change on dashboard
add data table to display campaigns
application review setup

campaign details rearrange

application review scaffold

move application models

application review component basics

get, set and update application rating

add `chaos.png`
* initial devcontainer setup

* basic email template get, update and delete

* template creation ui

* remove error printing

* convert all plain text responses to `AppMessage`

* fix email template card margins

* wrap `params` prop type with `Promise<>`

* actions workflows for nextjs

* add @radix-ui/react-alert-dialog

* add @radix-ui/react-tabs

* only run workflows when relevant paths modified
Update .gitignore
Co-authored-by: Alex_Miao_WSL <yuan_sen.miao@student.unsw.edu.au>
* campgaign details can be edited now

* removed unused state

* add new `*_MAX_*` env variables to rust workflow

* run rust workflow on pulls to `CHAOS-598-nextjs` branch

* reduce database seeding role desc length

* increase `ROLE_DESCRIPTION_MAX_CHARS` in workflow

* fix seeder imports & errors

* check in Cargo.lock

* fix lucide icon imports

* change `Promise<void>` returns to `Promise<AppMessage>`

---------

Co-authored-by: Kavika <kavika.palletenne@devsoc.app>
* left required image upload and chopped frontend design to fix

* fixed required image upload, and fixed abit of frontend, creating pr

* add slug to new campaign form

* don't force proper slug on manual edit

* add indexes to join columns

* fix duplicate index on `ranking_answer_rankings` table

* remove `UNIQUE` on join column indexes

* add required `UNIQUE` constraints

* fix seeding application users

---------

Co-authored-by: Kavika <kavika.palletenne@devsoc.app>
* Added fields to campaign and organisation

* add dev email as admin in seeding script

* Create build-seeding-binaries.yml

* create db before building seeding binaries

* Delete build-seeding-binaries.yml

* update database-seeding run with `--email` arg

* Created client facing campaign details page

* Updated campaign rolls endpoint to accept campaign_id as a number for proper fetching of roles per campaign

* campaign details ssr & translations

* fe campaign type fixes

* Update Cargo.lock

* fix changing RoleDetails id type to number

* Changed 'slate' colouring to 'gray' and removed dark mode tailwind support

---------

Co-authored-by: Kavika <kavika.palletenne@devsoc.app>
Co-authored-by: Christian <199553279+drboom16@users.noreply.github.com>
- Updated the organisation model to include ChaosEmail for sending invitations.
- Added TODOs for future invite code generation and summary of related UI.
@peternuyn peternuyn marked this pull request as draft January 7, 2026 07:15
@peternuyn peternuyn closed this Jan 7, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.